/*
 * Aprobar_producto.java
 *
 * Created on 14-oct-2008, 8:41:18
 */
package investigaciones_itm.Productos;

import com.sun.rave.faces.data.DefaultSelectItemsArray;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Body;
import com.sun.webui.jsf.component.Button;
import com.sun.webui.jsf.component.Calendar;
import com.sun.webui.jsf.component.Checkbox;
import com.sun.webui.jsf.component.Form;
import com.sun.webui.jsf.component.Head;
import com.sun.webui.jsf.component.Html;
import com.sun.webui.jsf.component.Label;
import com.sun.webui.jsf.component.Link;
import com.sun.webui.jsf.component.Page;
import com.sun.webui.jsf.component.PanelGroup;
import com.sun.webui.jsf.component.PanelLayout;
import com.sun.webui.jsf.component.RadioButtonGroup;
import com.sun.webui.jsf.component.StaticText;
import com.sun.webui.jsf.component.Tab;
import com.sun.webui.jsf.component.TabSet;
import com.sun.webui.jsf.component.Table;
import com.sun.webui.jsf.component.TableColumn;
import com.sun.webui.jsf.component.TableRowGroup;
import com.sun.webui.jsf.component.TextArea;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.model.DefaultTableDataProvider;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import itm.bo.productos.ProductoException;
import itm.exception.IndicadoresException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.FacesException;
import investigaciones_itm.ApplicationBean1;
import investigaciones_itm.RequestBean1;
import investigaciones_itm.SessionBean1;
import itm.bo.administracion.IndicadoresBO;
import itm.bo.productos.ProductosBO;
import itm.vo.administracion.EtiquetaVO;
import javax.faces.component.UIComponent;
import javax.faces.component.UISelectItems;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlInputHidden;
import javax.faces.component.html.HtmlMessages;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.component.html.HtmlSelectOneListbox;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import itm.vo.prodructos.CriteObservaProduVO;
import itm.vo.prodructos.EstadoVO;
import itm.vo.prodructos.EvaluacionProductoVO;
import itm.vo.prodructos.ItemEvaluacionVO;
import itm.vo.prodructos.ProductoVO;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import javax.faces.component.UIParameter;
import javax.faces.component.html.HtmlSelectOneRadio;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpSession;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @author Administrador
 */
public class Aprobar_producto extends AbstractPageBean {

    private List listaidCriterio;
    private static List listaIdItem;
    private static List listarequerido;
    private static List listaopcional;
    private List listacosa;
    private HttpSession session;
    private static final String ID_SESSION_APROBAR_PRODUCTO = "aprobar.producto";
    private List<EvaluacionProductoVO> listaCriterioItems = new ArrayList<EvaluacionProductoVO>();
    private List<EvaluacionProductoVO> listaEvaluacion = new ArrayList<EvaluacionProductoVO>();
    private String idProducto;
    private boolean boolControlTabs;
    private StaticText textRequerido;
    private StaticText textPeso;
    private double porcRequerido;
    private double porcOpcional;

    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
        radioButtonGroup1DefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("cumple", "Cumple "), new com.sun.webui.jsf.model.Option("no cumple", "No Cumple")});
    }
    private Page page1 = new Page();

    public Page getPage1() {
        return page1;
    }

    public void setPage1(Page p) {
        this.page1 = p;
    }
    private Html html1 = new Html();

    public Html getHtml1() {
        return html1;
    }

    public void setHtml1(Html h) {
        this.html1 = h;
    }
    private Head head1 = new Head();

    public Head getHead1() {
        return head1;
    }

    public void setHead1(Head h) {
        this.head1 = h;
    }
    private Link link1 = new Link();

    public Link getLink1() {
        return link1;
    }

    public void setLink1(Link l) {
        this.link1 = l;
    }
    private Body body1 = new Body();

    public Body getBody1() {
        return body1;
    }

    public void setBody1(Body b) {
        this.body1 = b;
    }
    private Form form1 = new Form();

    public Form getForm1() {
        return form1;
    }

    public void setForm1(Form f) {
        this.form1 = f;
    }
    private PanelGroup groupPanel1 = new PanelGroup();

    public PanelGroup getGroupPanel1() {
        return groupPanel1;
    }

    public void setGroupPanel1(PanelGroup pg) {
        this.groupPanel1 = pg;
    }
    private TabSet tabSet1 = new TabSet();

    public TabSet getTabSet1() {
        return tabSet1;
    }

    public void setTabSet1(TabSet ts) {
        this.tabSet1 = ts;
    }
    private Tab tab1 = new Tab();

    public Tab getTab1() {
        return tab1;
    }

    public void setTab1(Tab t) {
        this.tab1 = t;
    }
    private PanelLayout layoutPanel1 = new PanelLayout();

    public PanelLayout getLayoutPanel1() {
        return layoutPanel1;
    }

    public void setLayoutPanel1(PanelLayout pl) {
        this.layoutPanel1 = pl;
    }
    private Tab tabEvaluacion = new Tab();

    public Tab getTabEvaluacion() {
        return tabEvaluacion;
    }

    public void setTabEvaluacion(Tab t) {
        this.tabEvaluacion = t;
    }
    private PanelLayout layoutPanel2 = new PanelLayout();

    public PanelLayout getLayoutPanel2() {
        return layoutPanel2;
    }

    public void setLayoutPanel2(PanelLayout pl) {
        this.layoutPanel2 = pl;
    }
    private Label label1 = new Label();

    public Label getLabel1() {
        return label1;
    }

    public void setLabel1(Label l) {
        this.label1 = l;
    }
    private Button buttonIngreasrObserva = new Button();

    public Button getButtonIngreasrObserva() {
        return buttonIngreasrObserva;
    }

    public void setButtonIngreasrObserva(Button b) {
        this.buttonIngreasrObserva = b;
    }
    private Button buttonAprobarProducto = new Button();

    public Button getButtonAprobarProducto() {
        return buttonAprobarProducto;
    }

    public void setButtonAprobarProducto(Button b) {
        this.buttonAprobarProducto = b;
    }
    private Table table1 = new Table();

    public Table getTable1() {
        return table1;
    }

    public void setTable1(Table t) {
        this.table1 = t;
    }
    private TableRowGroup tableRowGroup1 = new TableRowGroup();

    public TableRowGroup getTableRowGroup1() {
        return tableRowGroup1;
    }

    public void setTableRowGroup1(TableRowGroup trg) {
        this.tableRowGroup1 = trg;
    }
    private TableColumn tableColumn4 = new TableColumn();

    public TableColumn getTableColumn4() {
        return tableColumn4;
    }

    public void setTableColumn4(TableColumn tc) {
        this.tableColumn4 = tc;
    }
    private StaticText staticText4 = new StaticText();

    public StaticText getStaticText4() {
        return staticText4;
    }

    public void setStaticText4(StaticText st) {
        this.staticText4 = st;
    }
    private TableColumn tableColumn5 = new TableColumn();

    public TableColumn getTableColumn5() {
        return tableColumn5;
    }

    public void setTableColumn5(TableColumn tc) {
        this.tableColumn5 = tc;
    }
    private StaticText staticText5 = new StaticText();

    public StaticText getStaticText5() {
        return staticText5;
    }

    public void setStaticText5(StaticText st) {
        this.staticText5 = st;
    }
    private TableColumn tableColumn1 = new TableColumn();

    public TableColumn getTableColumn1() {
        return tableColumn1;
    }

    public void setTableColumn1(TableColumn tc) {
        this.tableColumn1 = tc;
    }
    private Checkbox checkbox1 = new Checkbox();

    public Checkbox getCheckbox1() {
        return checkbox1;
    }

    public void setCheckbox1(Checkbox c) {
        this.checkbox1 = c;
    }
    private HtmlMessages messageList1 = new HtmlMessages();

    public HtmlMessages getMessageList1() {
        return messageList1;
    }

    public void setMessageList1(HtmlMessages hm) {
        this.messageList1 = hm;
    }
    private Label label2 = new Label();

    public Label getLabel2() {
        return label2;
    }

    public void setLabel2(Label l) {
        this.label2 = l;
    }
    private Label label3 = new Label();

    public Label getLabel3() {
        return label3;
    }

    public void setLabel3(Label l) {
        this.label3 = l;
    }
    private HtmlSelectOneListbox listboxProductos = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxProductos() {

        String idProducto = "";
        String nombreProducto = "";

        ProductosBO productosBO = new ProductosBO();
        List<ProductoVO> listaIDProducto = new ArrayList<ProductoVO>();
        List collection = new ArrayList();
        try {
            collection.add(new SelectItem("0", "-Seleccione un Producto--"));
            listaIDProducto = productosBO.listaProducEntrgados();

            if (listaIDProducto.size() == 0) {
                error("No se encuentran Productos Entregados");
            }

            for (int i = 0; i < listaIDProducto.size(); i++) {
                idProducto = listaIDProducto.get(i).getIdProducto();
                nombreProducto = listaIDProducto.get(i).getNombreProducto();

                collection.add(new SelectItem(idProducto, nombreProducto));
            } // end for
            UISelectItems listaMenu = new UISelectItems();
            listaMenu.setValue(collection);
            listboxProductos.getChildren().add(listaMenu);


        } catch (Exception e) {
            e.getStackTrace();
        }


        return listboxProductos;
    }

    public void actionListBoxProductos(ValueChangeEvent vce) {
        gridPanelTabla.setRendered(true);
        
        this.button1.setDisabled(false);
        this.buttonIngreasrObserva.setDisabled(false);
        try {
            idProducto = listboxProductos.getValue().toString();
            evaluacionProductoVO = new EvaluacionProductoVO();
            evaluacionProductoVO.setIdProducto(idProducto);
            productosBO = new ProductosBO();
            listaCriterioItems = productosBO.consultarItemsEvaluacion(evaluacionProductoVO);
            this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaCriterioItems", getListaCriterioItems());
            this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "idProducto", getIdProducto());
            this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "boolControlTabs", isBoolControlTabs());
        } catch (ProductoException ex) {
            Logger.getLogger(Aprobar_producto.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public StaticText getTextPeso() {
        return textPeso;
    }

    public void setTextPeso(StaticText textPeso) {
        this.textPeso = textPeso;
    }

    public StaticText getTextRequerido() {
        return textRequerido;
    }

    public void setTextRequerido(StaticText textRequerido) {
        this.textRequerido = textRequerido;
    }

    public void setListboxProductos(HtmlSelectOneListbox hsol) {
        this.listboxProductos = hsol;
    }
    private DefaultSelectItemsArray listbox1DefaultItems = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getListbox1DefaultItems() {
        return listbox1DefaultItems;
    }

    public void setListbox1DefaultItems(DefaultSelectItemsArray dsia) {
        this.listbox1DefaultItems = dsia;
    }
    private UISelectItems listbox1SelectItems = new UISelectItems();

    public UISelectItems getListbox1SelectItems() {
        return listbox1SelectItems;
    }

    public void setListbox1SelectItems(UISelectItems uisi) {
        this.listbox1SelectItems = uisi;
    }
    private Table table2 = new Table();

    public Table getTable2() {
        return table2;
    }

    public void setTable2(Table t) {
        this.table2 = t;
    }
    private TableRowGroup tableRowGroup2 = new TableRowGroup();

    public TableRowGroup getTableRowGroup2() {
        return tableRowGroup2;
    }

    public void setTableRowGroup2(TableRowGroup trg) {
        this.tableRowGroup2 = trg;
    }
    private TableColumn tableColumn7 = new TableColumn();

    public TableColumn getTableColumn7() {
        return tableColumn7;
    }

    public void setTableColumn7(TableColumn tc) {
        this.tableColumn7 = tc;
    }
    private StaticText staticText6 = new StaticText();

    public StaticText getStaticText6() {
        return staticText6;
    }

    public void setStaticText6(StaticText st) {
        this.staticText6 = st;
    }
    private TableColumn tableColumn8 = new TableColumn();

    public TableColumn getTableColumn8() {
        return tableColumn8;
    }

    public void setTableColumn8(TableColumn tc) {
        this.tableColumn8 = tc;
    }
    private StaticText staticText7 = new StaticText();

    public StaticText getStaticText7() {
        return staticText7;
    }

    public void setStaticText7(StaticText st) {
        this.staticText7 = st;
    }
    private TableColumn tableColumn9 = new TableColumn();

    public TableColumn getTableColumn9() {
        return tableColumn9;
    }

    public void setTableColumn9(TableColumn tc) {
        this.tableColumn9 = tc;
    }
    private StaticText staticText8 = new StaticText();

    public StaticText getStaticText8() {
        return staticText8;
    }

    public void setStaticText8(StaticText st) {
        this.staticText8 = st;
    }
    private TableColumn tableColumn10 = new TableColumn();

    public TableColumn getTableColumn10() {
        return tableColumn10;
    }

    public void setTableColumn10(TableColumn tc) {
        this.tableColumn10 = tc;
    }
    private StaticText staticText9 = new StaticText();

    public StaticText getStaticText9() {
        return staticText9;
    }

    public void setStaticText9(StaticText st) {
        this.staticText9 = st;
    }
    private TableColumn tableColumn2 = new TableColumn();

    public TableColumn getTableColumn2() {
        return tableColumn2;
    }

    public void setTableColumn2(TableColumn tc) {
        this.tableColumn2 = tc;
    }
    private Button button1 = new Button();

    public Button getButton1() {
        return button1;
    }

    public void setButton1(Button b) {
        this.button1 = b;
    }
    private HtmlMessages messageList2 = new HtmlMessages();

    public HtmlMessages getMessageList2() {
        return messageList2;
    }

    public void setMessageList2(HtmlMessages hm) {
        this.messageList2 = hm;
    }
    private Tab tabRechazar = new Tab();

    public Tab getTabRechazar() {
        return tabRechazar;
    }

    public void setTabRechazar(Tab t) {
        this.tabRechazar = t;
    }
    private PanelLayout layoutPanel3 = new PanelLayout();

    public PanelLayout getLayoutPanel3() {
        return layoutPanel3;
    }

    public void setLayoutPanel3(PanelLayout pl) {
        this.layoutPanel3 = pl;
    }
    private Button buttonCancelar = new Button();

    public Button getButtonCancelar() {
        return buttonCancelar;
    }

    public void setButtonCancelar(Button b) {
        this.buttonCancelar = b;
    }
    private Label label4 = new Label();

    public Label getLabel4() {
        return label4;
    }

    public void setLabel4(Label l) {
        this.label4 = l;
    }
    private TextArea textAreaMotivo = new TextArea();

    public TextArea getTextAreaMotivo() {
        return textAreaMotivo;
    }

    public void setTextAreaMotivo(TextArea ta) {
        this.textAreaMotivo = ta;
    }
    private Button buttonRechazar = new Button();

    public Button getButtonRechazar() {
        return buttonRechazar;
    }

    public void setButtonRechazar(Button b) {
        this.buttonRechazar = b;
    }
    private Label label5 = new Label();

    public Label getLabel5() {
        return label5;
    }

    public void setLabel5(Label l) {
        this.label5 = l;
    }
    private HtmlInputHidden hiddenFieldidProducto = new HtmlInputHidden();

    public HtmlInputHidden getHiddenFieldidProducto() {
        return hiddenFieldidProducto;
    }

    public void setHiddenFieldidProducto(HtmlInputHidden hih) {
        this.hiddenFieldidProducto = hih;
    }
    private Calendar calendarRechazo = new Calendar();

    public Calendar getCalendarRechazo() {
        return calendarRechazo;
    }

    public void setCalendarRechazo(Calendar c) {
        this.calendarRechazo = c;
    }
    private HtmlMessages messageList3 = new HtmlMessages();

    public HtmlMessages getMessageList3() {
        return messageList3;
    }

    public void setMessageList3(HtmlMessages hm) {
        this.messageList3 = hm;
    }
    private Button button2 = new Button();

    public Button getButton2() {
        return button2;
    }

    public void setButton2(Button b) {
        this.button2 = b;
    }
    private Label label6 = new Label();

    public Label getLabel6() {
        return label6;
    }

    public void setLabel6(Label l) {
        this.label6 = l;
    }
    private TextField textField1 = new TextField();

    public TextField getTextField1() {
        return textField1;
    }

    public void setTextField1(TextField tf) {
        this.textField1 = tf;
    }
    private HtmlSelectOneRadio radioButtonGroup1 = new HtmlSelectOneRadio();

    public HtmlSelectOneRadio getRadioButtonGroup1() {
        return radioButtonGroup1;
    }

    public void setRadioButtonGroup1(HtmlSelectOneRadio radioButtonGroup1) {
        this.radioButtonGroup1 = radioButtonGroup1;
    }
    private SingleSelectOptionsList radioButtonGroup1DefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getRadioButtonGroup1DefaultOptions() {
        return radioButtonGroup1DefaultOptions;
    }

    public void setRadioButtonGroup1DefaultOptions(SingleSelectOptionsList ssol) {
        this.radioButtonGroup1DefaultOptions = ssol;
    }
    private HtmlCommandButton button4 = new HtmlCommandButton();

    public HtmlCommandButton getButton4() {
        return button4;
    }

    public void setButton4(HtmlCommandButton hcb) {
        this.button4 = hcb;
    }
    private HtmlPanelGrid gridPanelPrincipal = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelPrincipal() {
        return gridPanelPrincipal;
    }

    public void setGridPanelPrincipal(HtmlPanelGrid hpg) {
        this.gridPanelPrincipal = hpg;
    }
    private HtmlPanelGrid gridPanelSelProducto = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelSelProducto() {
        return gridPanelSelProducto;
    }

    public void setGridPanelSelProducto(HtmlPanelGrid hpg) {
        this.gridPanelSelProducto = hpg;
    }
    private HtmlPanelGrid gridPanelItemEvaluar = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelItemEvaluar() {
        return gridPanelItemEvaluar;
    }

    public void setGridPanelItemEvaluar(HtmlPanelGrid hpg) {
        this.gridPanelItemEvaluar = hpg;
    }
    private HtmlPanelGrid gridPanelTabla = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelTabla() {
        return gridPanelTabla;
    }

    public void setGridPanelTabla(HtmlPanelGrid gridPanelTabla) {
        this.gridPanelTabla = gridPanelTabla;
    }
    private HtmlPanelGrid gridPanelBotones = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelBotones() {
        return gridPanelBotones;
    }

    public void setGridPanelBotones(HtmlPanelGrid hpg) {
        this.gridPanelBotones = hpg;
    }
    private DefaultTableDataProvider defaultTableDataProvider = new DefaultTableDataProvider();

    public DefaultTableDataProvider getDefaultTableDataProvider() {
        return defaultTableDataProvider;
    }

    public void setDefaultTableDataProvider(DefaultTableDataProvider dtdp) {
        this.defaultTableDataProvider = dtdp;
    }

    // </editor-fold>
    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public Aprobar_producto() {
        inicializar();
    }

    protected void inicializar() {
        boolControlTabs = true;
        cargarVaraiablesSesionLocal();
    }

    protected void cargarVaraiablesSesionLocal() {
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listacosa") != null) {
            setListacosa((List) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listacosa"));
        }
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaCriterioItems") != null) {
            setListaCriterioItems((List<EvaluacionProductoVO>) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaCriterioItems"));
        }
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaidCriterio") != null) {
            setListaidCriterio((List) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaidCriterio"));
        }
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "idProducto") != null) {
            setIdProducto((String) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "idProducto"));
        }
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "boolControlTabs") != null) {
            setBoolControlTabs((Boolean) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "boolControlTabs"));
        }
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaEvaluacion") != null) {
            setListaEvaluacion((List<EvaluacionProductoVO>) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaEvaluacion"));
        }
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcOpcional") != null) {
            setPorcOpcional((Double) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcOpcional"));
        }
        if (this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcRequerido") != null) {
            setPorcRequerido((Double) this.getSession().getAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcRequerido"));
        }
    }

    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here

        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("Aprobar_producto Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }

        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
        if (listaidCriterio == null) {
            listaidCriterio = new ArrayList();
        }

        if (listaIdItem == null) {
            listaIdItem = new ArrayList();
        }
        if (listarequerido == null) {
            listarequerido = new ArrayList();
        }
        if (listaopcional == null) {
            listaopcional = new ArrayList();
        }
        if (listacosa == null) {
            listacosa = new ArrayList();
        }
        listarCriterio();
    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }
    ProductoVO productoVO;
    EstadoVO estadoVO;
    EvaluacionProductoVO evaluacionProductoVO;

    public String tab1_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return null;
    }

    public void checkbox1_processValueChange(ValueChangeEvent event) {

        String prueba = "", idCriterio = "";
        String requerido = "";



        requerido = (String) event.getNewValue();

        try {

            criteObservaProduVO = new CriteObservaProduVO();
            productosBO = new ProductosBO();

            prueba = requerido;

            if (prueba.equals("true")) {
                criteObservaProduVO = new CriteObservaProduVO();
                idCriterio = (String) staticText5.getValue();

                listaidCriterio.add(idCriterio);
                prueba = "false";
            }

            this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaidCriterio", getListaidCriterio());

        } catch (Exception e) {
            e.getStackTrace();
        }

    }
    CriteObservaProduVO criteObservaProduVO;
    ProductosBO productosBO;
    List<CriteObservaProduVO> listaCriter = new ArrayList<CriteObservaProduVO>();

    public void listarCriterio() {



        try {
            criteObservaProduVO = new CriteObservaProduVO();
            productosBO = new ProductosBO();
            listaCriter = new ArrayList<CriteObservaProduVO>();

            listaCriter = productosBO.listaCriterioProducto();
            getSessionBean1().addListaCritObserProdu(listaCriter);

        } catch (Exception e) {
            error("Error al ingresar el Atributo.");
        }


    }

    public String buttonIngreasrObserva_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.

        
        String mos = "";
        this.boolControlTabs = false;
        try {

            criteObservaProduVO = new CriteObservaProduVO();

            for (int i = 0; i < listaidCriterio.size(); i++) {
                String idCriterio = (String) listaidCriterio.get(i);
                criteObservaProduVO.setIdCriterio(idCriterio);
                criteObservaProduVO.setIdProduco(idProducto);
                mos = productosBO.insertarCriteriProdu(criteObservaProduVO);

            }
            if (mos.equals("La observacion se ha agregado al producto")) {
                info(mos);
                this.buttonIngreasrObserva.setDisabled(true);
            } else {
                if (mos.equals("Error al ingresar las observaciones")) {
                    error(mos);
                } else {
                    if (mos.equals("La observación ya fue ingresesada")) {
                        error(mos);
                    } else {
                        error("Por favor seleccione al menos un criterio");
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaidCriterio", null);
        return null;
    }
    List<EvaluacionProductoVO> listaItem = new ArrayList<EvaluacionProductoVO>();

    public String buttonAceptar_action() {

        try {

            productosBO = new ProductosBO();
            productoVO = new ProductoVO();
            evaluacionProductoVO = new EvaluacionProductoVO();
            String idProducto = (String) listboxProductos.getValue();
            hiddenFieldidProducto.setValue(idProducto);
            evaluacionProductoVO.setIdProducto(idProducto);
            listaItem = productosBO.ConsultarItem(evaluacionProductoVO);

            listacosa = new ArrayList();

            for (int i = 0; i < listaItem.size(); i++) {
                String idItem = listaItem.get(i).getIdItem();
                listacosa.add(idItem);
            }

            getSessionBean1().addListaEvaluacionItem(listaItem);
        } catch (Exception e) {
            e.getStackTrace();
        }

        gridPanelTabla.setRendered(true);

        return null;
    }

    public void actionRadio(ValueChangeEvent vce) {
        UIParameter idItemParam = (UIParameter) vce.getComponent().findComponent("idItem");
        UIParameter idCriterioParam = (UIParameter) vce.getComponent().findComponent("idCriterio");
        String seleccion = radioButtonGroup1.getValue().toString();
        String nombre = staticText8.getValue().toString();
        long peso = Long.parseLong(textPeso.getValue().toString());
        String requerido = textRequerido.getValue().toString();
        String idItem = idItemParam.getValue().toString();
        String idCriterio = idCriterioParam.getValue().toString();
        EvaluacionProductoVO evaluacionVO = new EvaluacionProductoVO();
        evaluacionVO.setIdCriterio(Long.parseLong(idCriterio));
        ItemEvaluacionVO itemVO = new ItemEvaluacionVO();
        itemVO.setIdItem(Long.parseLong(idItem));
        itemVO.setNombreItem(nombre);
        itemVO.setPeso(peso);
        itemVO.setRequerido(requerido);
        if (seleccion.equals("Cumple")) {
            itemVO.setCumple("S");
        } else {
            if (seleccion.equals("No Cumple")) {
                itemVO.setCumple("N");
            }
        }
        evaluacionVO.setItemsEvaluacionVO(itemVO);
        evaluacionVO.setIdProducto(idProducto);
        listaEvaluacion.add(evaluacionVO);
        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaEvaluacion", getListaEvaluacion());
    }

    public void calcularValorItems() {

        long totalRequerido = 0;
        long totalCumpleRequerido = 0;
        long totalOpcional = 0;
        long totalCumpleOpcional = 0;
        double porcentajeRequerido = 0;
        double porcentajeOpcional = 0;
        for (int i = 0; i < listaEvaluacion.size(); i++) {
            if (listaEvaluacion.get(i).getItemsEvaluacionVO().getRequerido().equals("S")) {
                totalRequerido = totalRequerido + listaEvaluacion.get(i).getItemsEvaluacionVO().getPeso();
                if (listaEvaluacion.get(i).getItemsEvaluacionVO().getCumple().equals("S")) {
                    totalCumpleRequerido = totalCumpleRequerido + listaEvaluacion.get(i).getItemsEvaluacionVO().getPeso();
                }
            } else {
                if (listaEvaluacion.get(i).getItemsEvaluacionVO().getRequerido().equals("N")) {
                    totalOpcional = totalOpcional + listaEvaluacion.get(i).getItemsEvaluacionVO().getPeso();
                    if (listaEvaluacion.get(i).getItemsEvaluacionVO().getCumple().equals("S")) {
                        totalCumpleOpcional = totalCumpleOpcional + listaEvaluacion.get(i).getItemsEvaluacionVO().getPeso();
                    }
                }
            }
        }
        if(totalRequerido != 0){
        porcentajeRequerido = (totalCumpleRequerido * 100) / totalRequerido;
        }
        if(totalOpcional !=0){
        porcentajeOpcional = (totalCumpleOpcional * 100) / totalOpcional;
        }
        setPorcOpcional(porcentajeOpcional);
        setPorcRequerido(porcentajeRequerido);
        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcOpcional", getPorcOpcional());
        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcRequerido", getPorcRequerido());
    /* listaEvaluacion = new ArrayList();
    this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaEvaluacion", getListaEvaluacion());
     */

    }

    public void button1_action() {
       
        calcularValorItems();
        IndicadoresBO indicadorBO = new IndicadoresBO();
        ProductosBO pbo = new ProductosBO();
        EvaluacionProductoVO epvo;
        long idEtiquetaRequerido = 0;
        long idEtiquetaOpcional = 0;
        boolean entroReq = false;
        boolean entroOpc = false;
        boolean boolExito = false;
        int auxReq = 0;
        int sizeEtiquetas = 0;       
        try {
            List<EtiquetaVO> listaEtiqueta = indicadorBO.listarEtiquetas();
            sizeEtiquetas = listaEtiqueta.size();
            for (int i = 0; i < listaEtiqueta.size(); i++) {
                if (listaEtiqueta.get(i).getTipoEtiqueta().equals("Requerido")) {
                    if (porcRequerido <= listaEtiqueta.get(i).getPorcentaje()) {
                        idEtiquetaRequerido = listaEtiqueta.get(i).getIdEtiqueta();
                        entroReq = true;
                        break;
                    }
                    auxReq = auxReq + 1;
                }
            }
            for (int i = 0; i < listaEtiqueta.size(); i++) {
                if (listaEtiqueta.get(i).getTipoEtiqueta().equals("Opcional")) {
                    if (porcOpcional <= listaEtiqueta.get(i).getPorcentaje()) {
                        idEtiquetaOpcional = listaEtiqueta.get(i).getIdEtiqueta();
                        entroOpc = true;
                        break;
                    }
                }
            }
            if (entroReq == false) {
                if (porcRequerido == 0) {
                    idEtiquetaRequerido = listaEtiqueta.get(0).getIdEtiqueta();
                } else {
                    idEtiquetaRequerido = listaEtiqueta.get(auxReq - 1).getIdEtiqueta();
                }
            }
            if (entroOpc == false) {
                if (porcOpcional == 0) {
                    idEtiquetaOpcional = listaEtiqueta.get(auxReq).getIdEtiqueta();
                } else {
                    idEtiquetaOpcional = listaEtiqueta.get(sizeEtiquetas - 1).getIdEtiqueta();
                }
            }
            for (int i = 0; i < listaEvaluacion.size(); i++) {
                epvo = new EvaluacionProductoVO();
                epvo.setIdCriterio(listaEvaluacion.get(i).getIdCriterio());
                epvo.setIdProducto(listaEvaluacion.get(i).getIdProducto());
                epvo.setIdItem(Long.toString(listaEvaluacion.get(i).getItemsEvaluacionVO().getIdItem()));
                epvo.setPeso(listaEvaluacion.get(i).getItemsEvaluacionVO().getPeso());
                epvo.setRequerido(listaEvaluacion.get(i).getItemsEvaluacionVO().getRequerido());
                epvo.setCumple(listaEvaluacion.get(i).getItemsEvaluacionVO().getCumple());
                if (listaEvaluacion.get(i).getItemsEvaluacionVO().getRequerido().equals("S")) {
                    epvo.setIdEtiqueta(idEtiquetaRequerido);
                } else {
                    epvo.setIdEtiqueta(idEtiquetaOpcional);
                }
                try {
                    if (pbo.insertarEvaluacion(epvo).equals("exito")) {
                        boolExito = true;
                    } else {
                        boolExito = false;
                        break;
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                    Logger.getLogger(Aprobar_producto.class.getName()).log(Level.SEVERE, null, ex);
                    error("Error al guardar en la base de datos");
                }
            }
            if (boolExito == true) {
                info("La evaluación se ingreso correctamente");
                this.button1.setDisabled(true);
                 boolControlTabs = false;
            } else {
                error("Ocurrio un error al ingresar los datos");
            }

        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "listaEvaluacion", null);
        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcOpcional", null);
        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "porcRequerido", null);
        
        } catch (IndicadoresException ex) {
            Logger.getLogger(Aprobar_producto.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void checkbox2_validate(FacesContext context, UIComponent component, Object value) {
    }

    public void checkbox3_validate(FacesContext context, UIComponent component, Object value) {
    }

    public String button3_action() {
        tabSet1.setSelected(tabRechazar.getId().toString());

        return null;
    }

    public String buttonAprobarProducto_action() {
        String temp = "";
        this.boolControlTabs = false;
        try {
            productoVO = new ProductoVO();
            productoVO.setIdProducto(idProducto);
            temp = productosBO.aprobarProducto(productoVO);
            if (temp.equals("El producto fue aprobado")) {
                info(temp);
                listboxProductos = new HtmlSelectOneListbox();
                this.getListboxProductos();
                this.buttonRechazar.setDisabled(true);
            } else {
                if (temp.equals("El producto ya fue aprobado")) {
                    error(temp);
                } else {
                    if (temp.equals("Error al aprobar el producto")) {
                        error(temp);
                    } else {
                        error("Error Fatal en la base de datos");
                    }
                }
            }
        } catch (Exception e) {
            error("No se pudo aprobar el producto");
            e.printStackTrace();
        }
        return null;
    }

    public String tabRechazar_action() {
        return null;
    }

    public String buttonRechazar_action() {

        String temp = "", motivo = "";
        Date fechaRechazo = null;
        this.boolControlTabs = false;
        try {
            estadoVO = new EstadoVO();
            motivo = (String) textAreaMotivo.getValue();
            java.util.Date fechaIni = (java.util.Date) calendarRechazo.getValue();

            if (motivo == null || motivo.equals("")) {
                error("Digite el motivo del rechazo");
            }
            if (fechaIni == null) {
                error("Por favor Seleccione la fecha del rechazo");
            }
            fechaRechazo = new Date(fechaIni.getTime());
            estadoVO.setIdProducto(idProducto);
            estadoVO.setMotivoRechazo(motivo);
            estadoVO.setFechaRechazo(fechaRechazo);
            temp = productosBO.rechazarProducto(estadoVO);
            if (temp.equals("El producto fue rechazado")) {
                info(temp);
                listboxProductos = new HtmlSelectOneListbox();
                this.getListboxProductos();
                this.buttonAprobarProducto.setDisabled(true);
            } else {
                if (temp.equals("El producto ya fue rechazado")) {
                    error(temp);
                } else {
                    if (temp.equals("Error al rechazar el producto")) {
                        error(temp);
                    } else {
                        error("Error Fatal en la base de datos");
                    }
                }
            }

        } catch (Exception e) {
            error("No se pudo rechazar el producto");
            e.printStackTrace();
        }


        return null;
    }

    public String buttonCancelar_action() {

        tabSet1.setSelected(tabEvaluacion.getId().toString());
        return null;
    }

    public String button2_action() {
        String nombre = "", requerido = "", seleccion = "", idItem = "";

        try {
            requerido = (String) staticText9.getValue();
            nombre = (String) staticText8.getValue();
            idItem = (String) staticText7.getValue();

            if (!idItem.equals("")) {
                listacosa.add(idItem);
            }
            textField1.setValue(nombre);

            if (requerido.equals("S")) {

                seleccion = (String) radioButtonGroup1DefaultOptions.getSelectedValue();
                if (seleccion == null) {
                    error("Seleccione si cumple o no el item");
                } else if (seleccion.equals("no cumple")) {
                } else if (seleccion.equals("cumple")) {
                    int aux = 1;
                    listarequerido.add(aux);
                }
            } else if (requerido.equals("N")) {

                seleccion = (String) radioButtonGroup1DefaultOptions.getSelectedValue();
                if (seleccion.equals("cumple")) {
                    int aux1 = 1;
                    listaopcional.add(aux1);
                } else if (seleccion.equals("no cumple")) {
                } else if (seleccion == null) {
                    error("Seleccione si cumple o no cumple");
                }
            }

        } catch (Exception e) {
            error("Error");
            e.printStackTrace();
        }

        gridPanelItemEvaluar.setRendered(true);
        this.getSession().setAttribute(ID_SESSION_APROBAR_PRODUCTO + "listacosa", getListacosa());
        return null;
    }

    public String button4_action() {
        return "consultarProducto";
    }

    public List getListacosa() {
        return listacosa;
    }

    public void setListacosa(List listacosa) {
        this.listacosa = listacosa;
    }

    public HttpSession getSession() {
        return (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    }

    public void setSession(HttpSession session) {
        this.session = session;
    }

    public List<EvaluacionProductoVO> getListaCriterioItems() {
        return listaCriterioItems;
    }

    public void setListaCriterioItems(List<EvaluacionProductoVO> listaCriterioItems) {
        this.listaCriterioItems = listaCriterioItems;
    }

    public List getListaidCriterio() {
        return listaidCriterio;
    }

    public void setListaidCriterio(List listaidCriterio) {
        this.listaidCriterio = listaidCriterio;
    }

    public String getIdProducto() {
        return idProducto;
    }

    public void setIdProducto(String idProducto) {
        this.idProducto = idProducto;
    }

    public boolean isBoolControlTabs() {
        return boolControlTabs;
    }

    public void setBoolControlTabs(boolean boolControlTabs) {
        this.boolControlTabs = boolControlTabs;
    }

    public List<EvaluacionProductoVO> getListaEvaluacion() {
        return listaEvaluacion;
    }

    public void setListaEvaluacion(List<EvaluacionProductoVO> listaEvaluacion) {
        this.listaEvaluacion = listaEvaluacion;
    }

    public double getPorcOpcional() {
        return porcOpcional;
    }

    public void setPorcOpcional(double porcOpcional) {
        this.porcOpcional = porcOpcional;
    }

    public double getPorcRequerido() {
        return porcRequerido;
    }

    public void setPorcRequerido(double porcRequerido) {
        this.porcRequerido = porcRequerido;
    }
}

